package org.pahema.model;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name="comprobante")
public class Comprobante implements Serializable{

	private static final long serialVersionUID = -8215358507368446347L;

	@Id
	@Column(name="PK_ID_COMPROBANTE")
	@GeneratedValue
	private Long idComprobante;
	
	@ManyToOne
	@JoinColumn(name="FK_FACTURADOR")
	private Facturador facturador;
	
	@ManyToOne
	@JoinColumn(name="FK_PTO_VTA")
	private PuntoDeVenta puntoDeVenta;
	
	@ManyToOne
	@JoinColumn(name="FK_TIPO_COMPROBANTE")
	private TipoComprobante tipoComprobante;

	@ManyToOne
	@JoinColumn(name="FK_CONCEPTO")
	private Concepto concepto;

	@ManyToOne
	@JoinColumn(name="FK_CLIENTE")
	private Cliente cliente;
	
	@Column(name="A_NUMERO_COMPROBANTE")
	private Long nroComprobante;
	
	@Column(name="A_FECHA_COMPROBANTE")
	private Date fechaComprobante;
	
	@Column(name="A_IMPORTE_TOTAL")
	private BigDecimal importeTotal;
	
	@Column(name="A_IMPORTE_TOTAL_CONCEPTO")
	private BigDecimal importeTotalConcepto;
	
	@Column(name="A_IMPORTE_NETO")
	private BigDecimal importeNeto;
	
	@Column(name="A_IMPORTE_OPERATIVO_EX")
	private BigDecimal importeOperativoEx;
	
	@Column(name="A_IMPORTE_TRIBUTOS")
	private BigDecimal importeAtributos;
	
	@Column(name="A_IMPORTE_IVA")
	private BigDecimal importeIVA;

	@Column(name="A_FECHA_SERVICIO_DESDE")
	private Date fechaServicioDesde;
	
	@Column(name="A_FECHA_SERVICIO_HASTA")
	private Date fechaServicioHasta;
	
	@Column(name="A_FECHA_VTO_PAGO")
	private Date fechaVtoPago;
	
	@ManyToOne
	@JoinColumn(name="FK_MONEDA")
	private Moneda moneda;
	
	@OneToOne
	@JoinColumn(name="FK_FILE_ASOCIADO")
	private FileAsociado fileAsociado;
	
//	@OneToMany(mappedBy="comprobante")
//	private List<ItemComprobante> listaItemsComprobante;

	
	
	
	
	
	
	
	/*--- getters y setters ---*/
	
	public Long getIdComprobante() {
		return idComprobante;
	}

	public void setIdComprobante(Long idComprobante) {
		this.idComprobante = idComprobante;
	}

	public Facturador getFacturador() {
		return facturador;
	}

	public void setFacturador(Facturador facturador) {
		this.facturador = facturador;
	}

	public PuntoDeVenta getPuntoDeVenta() {
		return puntoDeVenta;
	}

	public void setPuntoDeVenta(PuntoDeVenta puntoDeVenta) {
		this.puntoDeVenta = puntoDeVenta;
	}

	public TipoComprobante getTipoComprobante() {
		return tipoComprobante;
	}

	public void setTipoComprobante(TipoComprobante tipoComprobante) {
		this.tipoComprobante = tipoComprobante;
	}

	public Concepto getConcepto() {
		return concepto;
	}

	public void setConcepto(Concepto concepto) {
		this.concepto = concepto;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public Long getNroComprobante() {
		return nroComprobante;
	}

	public void setNroComprobante(Long nroComprobante) {
		this.nroComprobante = nroComprobante;
	}

	public Date getFechaComprobante() {
		return fechaComprobante;
	}

	public void setFechaComprobante(Date fechaComprobante) {
		this.fechaComprobante = fechaComprobante;
	}

	public BigDecimal getImporteTotal() {
		return importeTotal;
	}

	public void setImporteTotal(BigDecimal importeTotal) {
		this.importeTotal = importeTotal;
	}

	public BigDecimal getImporteTotalConcepto() {
		return importeTotalConcepto;
	}

	public void setImporteTotalConcepto(BigDecimal importeTotalConcepto) {
		this.importeTotalConcepto = importeTotalConcepto;
	}

	public BigDecimal getImporteNeto() {
		return importeNeto;
	}

	public void setImporteNeto(BigDecimal importeNeto) {
		this.importeNeto = importeNeto;
	}

	public BigDecimal getImporteOperativoEx() {
		return importeOperativoEx;
	}

	public void setImporteOperativoEx(BigDecimal importeOperativoEx) {
		this.importeOperativoEx = importeOperativoEx;
	}

	public BigDecimal getImporteAtributos() {
		return importeAtributos;
	}

	public void setImporteAtributos(BigDecimal importeAtributos) {
		this.importeAtributos = importeAtributos;
	}
	
	public BigDecimal getImporteIVA() {
		return importeIVA;
	}

	public void setImporteIVA(BigDecimal importeIVA) {
		this.importeIVA = importeIVA;
	}

	public Date getFechaServicioDesde() {
		return fechaServicioDesde;
	}

	public void setFechaServicioDesde(Date fechaServicioDesde) {
		this.fechaServicioDesde = fechaServicioDesde;
	}

	public Date getFechaServicioHasta() {
		return fechaServicioHasta;
	}

	public void setFechaServicioHasta(Date fechaServicioHasta) {
		this.fechaServicioHasta = fechaServicioHasta;
	}

	public Date getFechaVtoPago() {
		return fechaVtoPago;
	}

	public void setFechaVtoPago(Date fechaVtoPago) {
		this.fechaVtoPago = fechaVtoPago;
	}

	public Moneda getMoneda() {
		return moneda;
	}

	public void setMoneda(Moneda moneda) {
		this.moneda = moneda;
	}

	public FileAsociado getFileAsociado() {
		return fileAsociado;
	}

	public void setFileAsociado(FileAsociado fileAsociado) {
		this.fileAsociado = fileAsociado;
	}

//	public List<ItemComprobante> getListaItemsComprobante() {
//		return listaItemsComprobante;
//	}
//
//	public void setListaItemsComprobante(List<ItemComprobante> listaItemsComprobante) {
//		this.listaItemsComprobante = listaItemsComprobante;
//	}
	
}
